#include <allegro.h>

volatile long predkosc = 0;

void zwieksz_predkosc()
{
    predkosc++;
}
END_OF_FUNCTION(zwieksz_predkosc);
LOCK_VARIABLE(predkosc);
LOCK_FUNCTION(zwieksz_predkosc);

int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth(16);
    set_gfx_mode(GFX_AUTODETECT,800,600,0,0);
    install_timer();
    install_int_ex(zwieksz_predkosc,BPS_TO_TIMER(60));
    BITMAP *bufor = NULL;
    BITMAP *ludek = NULL;
    bufor = create_bitmap(800,600);
    if(!bufor)
    {
        set_gfx_mode(GFX_TEXT,0,0,0,0);
        allegro_message("Nie moge utworzyc bufora");
        allegro_exit();
        return 0;
    }
    ludek = load_bmp("ludek.bmp",default_palette);
    if(!ludek)
        {
        set_gfx_mode(GFX_TEXT,0,0,0,0);
        allegro_message("Nie moge zaladowac ludek.bmp");
        allegro_exit();
        return 0;
    }
    int ludek_x = 100, ludek_y = 100;
    while(!key[KEY_ESC])
    {
        while ( predkosc > 0)
        {
            if (key[KEY_LEFT]) ludek_x--;
            if (key[KEY_RIGHT]) ludek_x++;
            if (key[KEY_UP]) ludek_y--;
            if (key[KEY_DOWN]) ludek_y++;
            predkosc--;
        }
        clear_to_color(bufor,makecol(150,150,150));
        masked_blit(ludek,bufor,0,0,ludek_x,ludek_y,ludek->w,ludek->h);
        blit(bufor, screen,0,0,0,0,800,600);
    }
    remove_int(zwieksz_predkosc);
    destroy_bitmap(ludek);
     destroy_bitmap(bufor);
     allegro_exit();
     return 0;
}
END_OF_MAIN();
